The present invention relates to mobile application programming.
Mobile devices are quickly becoming the de-facto means to access, process, and even generate significant amounts of data. A study by Cisco suggests a strong growth in mobile data traffic, more than doubling every year for the past four years; the study also provides evidence for a strong growth potential in the number of smartphone subscribers. Several recent articles have noted that the strain of data-intensive devices may place additional pressure on mobile operators as they build out faster networks. Mobile users are using their smartphones and tablets to view movies, download photo albums, and follow news, email, and Facebook feeds, often many at the same time.—downloading books, watching videos and photos, and feeds for news, stocks, and social networks. Today, mobile devices are moving away from While demand for data services is on the rise, end-user resources (e.g., device battery life, cellular data usage) and operator resources (e.g., mobile network bandwidth) are still constrained. Mobile data usage is on a tremendous rise, due not only to increasing number of users but also to an increase in the number of applications that transfer data over the network. 0 Moreover, applications for sharing, sensing, and collaboration have become more popular, causing significant amounts of data to be generated on devices. Managing this data—syncing it to the cloud, or with other users or devices—is a crucial and often challenging part of writing mobile apps and services. In spite of plenty of good advice and best practices from OS vendors and network operators, storing and transferring mobile data is fraught with issues. On the one hand, an app developer needs to worry about the semantics of data storage and synchronization, while on the other, about the end-user experience, which is impacted by poor and intermittent network connectivity.
This insatiable hunger for mobile data has been spurred in large parts due to a surge in apps requiring faster connectivity and more bandwidth to connect to cloud services. Mobile users are also undergoing a sea-change from being consumers to producers of data, as collaborative and sensor-based applications become more popular. From healthcare monitoring to instant polling for TV shows, mobile users are generating far more data than ever before.
While human-generated data (i.e., emails, calendar entries) is small, on-board and externally connected sensors lead to a number of apps continually generating data and pushing it to cloud services for further analysis or backup. Examples of such apps include vehicular traffic monitoring, continuous medical monitoring through specialized sensors, and location-based services. Such apps are growing in utility and popularity, shifting the balance from the once “download-heavy” nature of mobile apps.
Downlink data is growing too. Better displays on smartphones and tablets are overcoming the handicap of the small screen size; users are increasingly relying on their mobile devices to access a variety of audio, video, and textual content. Several mobile apps operate as readers for RSS or news feeds, and periodically download data to the device; such periodic sync apps account for a large fraction of the total network connections.
While data needs of mobile apps are on the rise, several factors limit the overall mobile experience for users of such apps. First, battery life on most mobile devices continues to be limited; significant increase in battery life is not expected in the near future and power management is still extremely important to end users. Second, network operators are scrambling to increase capacity to match growing demands and expectations; growth in the number of mobile users and increased activity per user has placed a huge burden on the mobile network infrastructure. Third, cost of cellular data is still high in most countries; with low-spec smartphones gaining traction, the requirements of even greater number of mobile users needs to be met.
Since the majority of apps are responsible for their own data transfer, they fail to benefit from optimizations such as compression and deduplication that are much more effective on larger chunks of data. Both iOS and Android provide extensive “best practices” and programming guidelines that developers are expected to adhere to when it comes to local and network I/O; network operators like AT&T provide their own. The recommendations although beneficial when applied to individual apps, fail to incorporate any benefits from cross-app optimizations.
Apps that need to synchronize and share data between mobile users and the cloud end up having to individually design and implement the sync mechanisms: managing data transfers, handling network failures and process crashes, and even more onerous—detecting and resolving conflicts, and propagating changes to other users in a timely fashion. Efficient usage of network resources is also challenging. Individual apps transfer frequently enough that even with a small number of bytes at a time, the cellular radio is kept on for extended periods of time; uncoordinated transfers across apps further increase the frequency of the radio being awake.